The present invention relates to computer technology, and more specifically to resource allocation.
In Cloud computing, particularly in scenarios of Software-as-a-Service (SaaS), a subscriber can flexibly “lease” from a SaaS provider a right to use an application for a period of time. In this way, the subscriber does not need to pay for purchasing the application. A SaaS provider can either “lease” or purchase resources to run the leased applications. The resources may be hardware, software or a combination of hardware and software resources. The hardware resources may be, for example, a processor, memory, bandwidth, storage capacity, etc. The software resource may be, for example, a web application server, DBMS, a portal server, etc. The combined resources may be for example, a standard virtual machine, a standard web application run time virtual machine, and etc.
To optimize resource utilization, it is best to use as few resources as possible while allowing as many accesses to the applications as possible. This requires taking resource benefits, resource costs and relations between resources into consideration. Currently available resource schedule optimizers do not vary both the resource benefits and resource costs with time, and, therefore, results obtained with fixed resource benefits and resource costs are inaccurate.
Resource benefits of a certain amount of resources can be represented by an actual amount of accesses increased by adding the certain amount of resources. Those skilled in the art would appreciate that, although more resources can bring a larger allowable amount of accesses to the applications, when the allowable amount of accesses exceeds an actual number of access requests, further increasing the allowable amount of accesses will not bring an incremental increase of the actual accesses. Therefore, the actual amount of accesses increased by the certain amount of resources at a moment depends not only on the already allocated resources, i.e., the existing allowable amount of accesses, but also on an actual number of access requests. Since both the already allocated resources and the actual number of access requests vary with time, the actual amount of accesses increased by adding the certain amount of resources will also vary with time, such that resource benefits of the certain amount of resources will also vary with time.
Resource costs may be represented by a percentage of the certain amount of resources in the unallocated resources. Those skilled in the art would appreciate that, in a period of time where resources are in short supply, the cost of using resources is higher than in a period of time where resources are in abundance. Furthermore, the resource costs also depend on other factors, for example, in a case where the SaaS provider purchases his own hardware to run the leased applications, fees for the hardware, per se, and fees for maintaining the hardware vary with time, so the resource costs also vary with time.
The relations between the resources are always relatively fixed. For example, a standard virtual machine comprises a certain amount of hardware resources plus a set of virtual machine management programs, so the standard virtual machine resource relies on the hardware resources and the virtual machine management program software resources. Again, for example, a standard web application run time virtual machine comprises a set of web application servers and DBMS software resources, and a standard virtual machine, so the standard web application run time virtual machine relies on the web application server software resources, DBMS software resources and standard virtual machine resources. In addition to the above reliance relations, exclusive relations may exist between the resources.
The actual amount of accesses to some applications may be more sensitive to a certain resource or may vary with time. For example, an actual amount of accesses of the applications in a period of time may mainly depend on a number of processor cores allocated to the applications, but in another period of time may mainly depend on a bandwidth allocated to the applications.